<?php

namespace Medicina\KernelBundle\Entity;

use Doctrine\ORM\EntityRepository;

class CargoRepository extends EntityRepository {

    public function cargosParaCatedra($catedra_id) {
        $em = $this->getEntityManager();

        $consulta = $em->createQuery('
            SELECT o
            FROM \Medicina\KernelBundle\Entity\Cargo o 
            WHERE o.catedra = :id
            ORDER BY o.codigo DESC
        ');
        $consulta->setParameter('id', $catedra_id);
        $consulta->useResultCache(true, 3600);
        return $consulta->getResult();
    }

    public function personasParaCargo($cargo_id) {
        $em = $this->getEntityManager();

        $consulta = $em->createQueryBuilder()
                ->select('poc')
                ->from('\Medicina\KernelBundle\Entity\PersonaOcupaCargo', 'poc')
                ->innerJoin('poc.persona', 'p')
                ->where('poc.cargo = :id')
                ->orderBy('poc.fechaInicio', 'ASC')
                ->setParameter('id', $cargo_id)
                ->getQuery();
        return $consulta->getResult();
    }
    
    public function getCargoByCriterias($datos) {
        $em = $this->getEntityManager();
        $codigo = $datos->getCodigo();
        $catedra = $datos->getCatedra();
        $tipocargo = $datos->getTipoDeCargo();
        $tipodedicacion = $datos->getTipoDeDedicacion();

        if ($codigo != "") {
            $codigo = '\'%' . $codigo . '%\'';
        } else {
            $codigo = '\'zzzz\'';
        }

        if ($catedra != "") {
            $catedra = '\'%' . $catedra . '%\'';
        } else {
            $catedra = '\'zzzz\'';
        }

        if ($tipocargo != "") {
            $tipocargo = '\'%' . $tipocargo . '%\'';
        } else {
            $tipocargo = '\'zzzz\'';
        }
        if ($tipodedicacion != "") {
            $tipodedicacion = '\'%' . $tipodedicacion . '%\'';
        } else {
            $tipodedicacion = '\'zzzz\'';
        }

        $varAux = '\'zzzz\'';

        $consulta = $em->createQueryBuilder()
                ->select('c')
                ->from('\Medicina\KernelBundle\Entity\Cargo', 'c')
                ->innerJoin('c.catedra', 'cat')
                ->innerJoin('c.tipoDeCargo', 'tdc')
             //   ->innerJoin('c.tipo_de_dedicacion', 'tdd')
                
                ->where('(c.codigo like  ' . $codigo . ' or ' . $codigo . '=' . $varAux . ')')
                ->andWhere('(cat.nombre like ' . $catedra . 'or ' . $catedra . '=' . $varAux . ')')
                ->andWhere('(tdc.nombre like ' . $tipocargo . 'or ' . $tipocargo . '=' . $varAux . ')')
                ->andWhere('(c.tipoDeDedicacion like ' . $tipodedicacion . 'or ' . $tipodedicacion . '=' . $varAux . ')')
                ->getQuery();
        return $consulta->getResult();
    }

}

?>
